import { ApiHideProperty, ApiProperty } from '@nestjs/swagger';
import { IsNumber, IsOptional, IsString } from 'class-validator';
import {
  Column,
  CreateDateColumn,
  Entity,
  PrimaryGeneratedColumn,
  UpdateDateColumn,
} from 'typeorm';

@Entity('posts')
export class Post {
  /**
   * 文章ID
   */
  @IsNumber()
  @PrimaryGeneratedColumn('increment')
  postId: number;

  /**
   * 文章标题
   */
  @IsString()
  @Column()
  title: string;

  /**
   * 文章图片
   */
  @Column({ nullable: true })
  @IsString()
  @IsOptional()
  image?: string;

  /**
   * 文章视频
   */
  @Column({ nullable: true })
  @IsString()
  @IsOptional()
  video?: string;

  /**
   * 文章内容
   */
  @IsString()
  @Column({ type: 'longtext' })
  content: string;

  /**
   * 浏览量
   */
  @ApiHideProperty()
  @Column()
  viewCount?: number = 0;

  @CreateDateColumn()
  createdAt?: Date;

  @UpdateDateColumn()
  updatedAt?: Date;

  @ApiHideProperty()
  // ? 注意加了 select，查数据修改的时候需要 select 选上才能修改,否则是一个新对象，等于直接赋值
  @Column({ default: false, select: false })
  isDeleted?: boolean;
}
